home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / memleak_1.0 / memory.c < prev    next >
C/C++ Source or Header  |  1995-11-05  |  5KB  |  198 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : devitt
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <proto/exec.h>
  18. #include <proto/intuition.h>
  19. #include <proto/gadtools.h>
  20. #include <proto/graphics.h>
  21. #include <proto/utility.h>
  22. #include <string.h>
  23.  
  24. #include "memory.h"
  25.  
  26. struct Screen         *Scr = NULL;
  27. UBYTE                 *PubScreenName = NULL;
  28. APTR                   VisualInfo = NULL;
  29. struct Window         *MemoryWnd = NULL;
  30. struct Gadget         *MemoryGList = NULL;
  31. struct IntuiMessage    MemoryMsg;
  32. struct Gadget         *MemoryGadgets[5];
  33. UWORD                  MemoryLeft = 109;
  34. UWORD                  MemoryTop = 56;
  35. UWORD                  MemoryWidth = 305;
  36. UWORD                  MemoryHeight = 101;
  37. UBYTE                 *MemoryWdt = (UBYTE *)"MemLeak";
  38.  
  39. struct TextAttr topaz8 = {
  40.     ( STRPTR )"topaz.font", 8, 0x00, 0x01 };
  41.  
  42. struct IntuiText MemoryIText[] = {
  43.     3, 0, JAM1,55, 87, &topaz8, (UBYTE *)"MemLeak ©1994 by Devitt", NULL };
  44.  
  45. UWORD MemoryGTypes[] = {
  46.     BUTTON_KIND,
  47.     BUTTON_KIND,
  48.     TEXT_KIND,
  49.     TEXT_KIND,
  50.     TEXT_KIND
  51. };
  52.  
  53. struct NewGadget MemoryNGad[] = {
  54.     27, 7, 104, 17, (UBYTE *)"Before", NULL, GD_BeforeGad, PLACETEXT_IN, NULL, (APTR)BeforeGadClicked,
  55.     27, 35, 104, 17, (UBYTE *)"After", NULL, GD_AfterGad, PLACETEXT_IN, NULL, (APTR)AfterGadClicked,
  56.     161, 6, 104, 17, NULL, NULL, GD_BeforeText, 0, NULL, NULL,
  57.     161, 35, 104, 17, NULL, NULL, GD_AfterText, 0, NULL, NULL,
  58.     138, 63, 104, 17, (UBYTE *)"Difference", NULL, GD_DiffText, PLACETEXT_LEFT, NULL, NULL
  59. };
  60.  
  61. ULONG MemoryGTags[] = {
  62.     (TAG_DONE),
  63.     (TAG_DONE),
  64.     (GTTX_Border), TRUE, (TAG_DONE),
  65.     (GTTX_Border), TRUE, (TAG_DONE),
  66.     (GTTX_Border), TRUE, (TAG_DONE)
  67. };
  68.  
  69. int SetupScreen( void )
  70. {
  71.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  72.         return( 1L );
  73.  
  74.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  75.         return( 2L );
  76.  
  77.     return( 0L );
  78. }
  79.  
  80. void CloseDownScreen( void )
  81. {
  82.     if ( VisualInfo ) {
  83.         FreeVisualInfo( VisualInfo );
  84.         VisualInfo = NULL;
  85.     }
  86.  
  87.     if ( Scr        ) {
  88.         UnlockPubScreen( NULL, Scr );
  89.         Scr = NULL;
  90.     }
  91. }
  92.  
  93. void MemoryRender( void )
  94. {
  95.     UWORD        offx, offy;
  96.  
  97.     offx = MemoryWnd->BorderLeft;
  98.     offy = MemoryWnd->BorderTop;
  99.  
  100.     PrintIText( MemoryWnd->RPort, MemoryIText, offx, offy );
  101. }
  102.  
  103. int HandleMemoryIDCMP( void )
  104. {
  105.     struct IntuiMessage    *m;
  106.     int            (*func)();
  107.     BOOL            running = TRUE;
  108.  
  109.     while( m = GT_GetIMsg( MemoryWnd->UserPort )) {
  110.  
  111.         CopyMem(( char * )m, ( char * )&MemoryMsg, (long)sizeof( struct IntuiMessage ));
  112.  
  113.         GT_ReplyIMsg( m );
  114.  
  115.         switch ( MemoryMsg.Class ) {
  116.  
  117.             case    IDCMP_REFRESHWINDOW:
  118.                 GT_BeginRefresh( MemoryWnd );
  119.                 MemoryRender();
  120.                 GT_EndRefresh( MemoryWnd, TRUE );
  121.                 break;
  122.  
  123.             case    IDCMP_CLOSEWINDOW:
  124.                 running = MemoryCloseWindow();
  125.                 break;
  126.  
  127.             case    IDCMP_GADGETUP:
  128.                 func = ( void * )(( struct Gadget * )MemoryMsg.IAddress )->UserData;
  129.                 running = func();
  130.                 break;
  131.         }
  132.     }
  133.     return( running );
  134. }
  135.  
  136. int OpenMemoryWindow( void )
  137. {
  138.     struct NewGadget    ng;
  139.     struct Gadget    *g;
  140.     UWORD        lc, tc;
  141.     UWORD        offx = Scr->WBorLeft, offy = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  142.  
  143.     if ( ! ( g = CreateContext( &MemoryGList )))
  144.         return( 1L );
  145.  
  146.     for( lc = 0, tc = 0; lc < Memory_CNT; lc++ ) {
  147.  
  148.         CopyMem((char * )&MemoryNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  149.  
  150.         ng.ng_VisualInfo = VisualInfo;
  151.         ng.ng_TextAttr   = &topaz8;
  152.         ng.ng_LeftEdge  += offx;
  153.         ng.ng_TopEdge   += offy;
  154.  
  155.         MemoryGadgets[ lc ] = g = CreateGadgetA((ULONG)MemoryGTypes[ lc ], g, &ng, ( struct TagItem * )&MemoryGTags[ tc ] );
  156.  
  157.         while( MemoryGTags[ tc ] ) tc += 2;
  158.         tc++;
  159.  
  160.         if ( NOT g )
  161.             return( 2L );
  162.     }
  163.  
  164.     if ( ! ( MemoryWnd = OpenWindowTags( NULL,
  165.                 WA_Left,    MemoryLeft,
  166.                 WA_Top,        MemoryTop,
  167.                 WA_Width,    MemoryWidth,
  168.                 WA_Height,    MemoryHeight + offy,
  169.                 WA_IDCMP,    BUTTONIDCMP|TEXTIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW,
  170.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  171.                 WA_Gadgets,    MemoryGList,
  172.                 WA_Title,    MemoryWdt,
  173.                 WA_ScreenTitle,    "MemLeak ©1994 by Devitt",
  174.                 WA_PubScreen,    Scr,
  175.                 TAG_DONE )))
  176.     return( 4L );
  177.  
  178.     GT_RefreshWindow( MemoryWnd, NULL );
  179.  
  180.     MemoryRender();
  181.  
  182.     return( 0L );
  183. }
  184.  
  185. void CloseMemoryWindow( void )
  186. {
  187.     if ( MemoryWnd        ) {
  188.         CloseWindow( MemoryWnd );
  189.         MemoryWnd = NULL;
  190.     }
  191.  
  192.     if ( MemoryGList      ) {
  193.         FreeGadgets( MemoryGList );
  194.         MemoryGList = NULL;
  195.     }
  196. }
  197.  
  198.